//app.js
const requestAPI = require('./utils/requestAPI.js') //网络请求 API
const tip = require('./utils/tip.js') //提示框
const config = require('./config.js') //全局配置文件
var userId = wx.getStorageSync(config.userId)

App({

  requestAPI: requestAPI,
  tip: tip,
  config: config,

  onLaunch: function() {
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              //req code
              // this.login()
              if (userId){
                wx.reLaunch({
                  url: '/pages/search/search',
                })
              }

              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        } else {
          tip.log('用户未授权')
          wx.reLaunch({
            url: '/pages/autho/autho',
          })
        }
      }
    })

    // 关闭调试
    wx.setEnableDebug({
      enableDebug: this.globalData.debug
    })

  },
  // 登录
  login: function() {
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        requestAPI.wxLogin(res.code)
          .then(d => {
            console.log(d)
            if (d.code == 200) {
              this.saveUserInfo(d.data)
            } else {
              tip.toast(d.msg)
            }
          }).catch(e => {
            tip.toast('网络异常')
            tip.log('wxLogin请求异常')
          });
      }
    })
  },
  //保存用户信息到本地
  saveUserInfo: function (res) {
    for (var i in res) {
      // wx.setStorage({
      //   key: i,
      //   data: res[i],
      // })
      wx.setStorageSync(i, res[i])
    }
    tip.log('保存jsocde信息成功')
  },
  globalData: {
    userInfo: null,
    debug: false, //debug模式(开启控制台日志打印)
  }
})